﻿using Microsoft.Extensions.Logging;
using Simple.Framework.Configuration;
using Simple.Framework.Ioc;
using Simple.Framework.Load;
using Simple.Framework.Logger;
using Simple.Framework.Schedule;
using Simple.Tools;
using SimpleNet.Client;
using SimpleNet.Handle;
using SimpleNet.Protocol;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SimpleNet.Net
{
	public interface ISimpleBuilder
	{





		public void RegisterClassLoadProcess<TIClassLoadProcess>() where TIClassLoadProcess : IClassLoadProcess;


		public ISimpleBuilder Regster(Action<IContainer> action);


		public ISimpleBuilder StartPrettyServer();



		/// <summary>
		/// 
		/// </summary>
		/// <param name="ConfigurationPath"></param>
		/// <returns></returns>
		public ISimpleBuilder SetConfiguration(string ConfigurationPath);
	

		public ISimpleBuilder ConfigutionMessageHandle<TMessageHandle>() where TMessageHandle : IMessageHandle;


		public ISimpleBuilder ConfigutionLogger(Action<ClassNameLoggerProvider> action);
	

		public T GetService<T>();
		
		public IContainer GetContainer();

		public ISimpleClient CreateClient();
	}
}
